/**
 * 认证相关工具函数
 */

/**
 * 检查API响应是否为token过期
 */
export function isTokenExpired(response: any): boolean {
  // 检查响应体中的消息
  if (response.message === 'token过期') {
    return true;
  }
  
  // 检查响应体中的data字段
  if (response.data === 'token过期') {
    return true;
  }
  
  // 检查响应体中的cause字段
  if (response.cause === 'token过期') {
    return true;
  }
  
  return false;
}

/**
 * 处理token过期，自动跳转到登录页面
 */
export function handleTokenExpired(message: string = '登录已过期，正在跳转到登录页面...'): void {
  // 显示提示信息
  console.warn(message);
  
  // 清除本地存储
  localStorage.clear();
  
  // 延迟跳转，让用户看到提示
  setTimeout(() => {
    window.location.href = '/sign-in';
  }, 2000);
}

/**
 * 检查token是否存在且有效
 */
export function isTokenValid(): boolean {
  const token = localStorage.getItem('token');
  return token !== null && token !== undefined && token !== '';
}

/**
 * 获取认证头
 */
export function getAuthHeader(): { Authorization: string } | {} {
  const token = localStorage.getItem('token');
  return token ? { Authorization: `Bearer ${token}` } : {};
}

/**
 * 安全的API调用包装器
 */
export async function safeApiCall<T>(
  apiCall: () => Promise<T>,
  onTokenExpired?: () => void
): Promise<T | null> {
  try {
    return await apiCall();
  } catch (error) {
    console.error('API call failed:', error);
    return null;
  }
}
